package com.wangct.zzzpro;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;
import android.widget.TextView;

public class MyWebViewAct extends Activity {
	// 声明一个webview
	private WebView mWebView;
	String myUrl = "http://www.qq.com";
	ProgressBar webProgress;// webview顶栏的进度条
	TextView webTitle;// 顶栏的title

	// private MyWebViewClient WVClient;

	private WebSettings webSettings;

	// 我的handler对象
	// ProgressDialog proDialog;
	Handler handler;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);

		setContentView(R.layout.activity_webview);

		// 在这里获取到传来的URL 然后加载到webview里面
		// 获取那边activity传来的数据
		Bundle bundle = getIntent().getExtras();
		String urlName = bundle.getString("url");
		myUrl = urlName;

		initView();
	}

	private void initView() {
		mWebView = (WebView) findViewById(R.id.web);// 获取webview对象
		webProgress = (ProgressBar) findViewById(R.id.web_progressbar);// 获取顶栏精度条对象
		webTitle = (TextView) findViewById(R.id.webview_title);

		// //  创建一个dialog
		// proDialog = new ProgressDialog(this);
		// proDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
		// proDialog.setMessage("页面载入中...");

		handler = new Handler() {
			public void handleMessage(Message msg) {// 定义一个Handler，用于处理下载线程与UI间通讯
				if (!Thread.currentThread().isInterrupted()) {
					switch (msg.what) {
					case 0:
						webProgress.setVisibility(View.VISIBLE);// 显示进度条
						// proDialog.show();// 显示进度对话框
						break;
					case 1:
						webProgress.setVisibility(View.GONE);//进度条隐藏
						// proDialog.hide();//
						// 隐藏进度对话框，不可使用dismiss()、cancel(),否则再次调用show()时，显示的对话框小圆圈不会动。
						break;
					}
				}
				super.handleMessage(msg);
			}
		};

		mWebView.setScrollBarStyle(0);// 滚动条风格，为0就是不给滚动条留空间，滚动条覆盖在网页上

		Webchrom webchrom = new Webchrom();
		Webvc webvc = new Webvc();
		mWebView.setWebChromeClient(webchrom);
		mWebView.setWebViewClient(webvc);
		// 各种设置
		webSettings = mWebView.getSettings();
		webSettings.setJavaScriptEnabled(true);
		webSettings.setBuiltInZoomControls(false);
		webSettings.setSavePassword(true);
		webSettings.setLoadWithOverviewMode(true);
		webSettings.setUseWideViewPort(true);

		// 支持多种分辨率，需要js网页支持
		// webSettings.setUserAgentString("mac os");
		webSettings.setDefaultTextEncodingName("utf-8");

		// 网页
		loadurlmethod(mWebView, myUrl);

	}

	class Webchrom extends WebChromeClient {
		@Override
		public void onProgressChanged(WebView view, int progress) {// 载入进度改变而触发

			// 设置带进度的进度条
			webProgress.setProgress(progress);
			Log.d("-------------------->", "progress值:" + progress);

			if (progress >= 90) {
				handler.sendEmptyMessage(1);// 如果全部载入,隐藏进度对话框
			}
		}

		@Override
		public void onReceivedTitle(WebView view, String title) {
			// TODO Auto-generated method stub
			super.onReceivedTitle(view, title);
			Log.d("ANDROID_LAB", "TITLE=" + title);
			webTitle.setText(title);
		}

	}

	class Webvc extends WebViewClient {
		@Override
		public boolean shouldOverrideUrlLoading(WebView view, String url) {
			loadurlmethod(view, url);
			return true;
		}

		@Override
		public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
			super.onReceivedError(view, errorCode, description, failingUrl);
		}
	}

	// webView 的加载
	public void loadurlmethod(final WebView view, final String url) {
		view.loadUrl(url);// 载入网页
		// mWebView.setVisibility(View.GONE);
		Thread aa = new Thread() {
			public void run() {
				Log.e("---------->", "这里是进入run方法.");
				handler.sendEmptyMessage(0);

				Log.e("---------->", "这里是执行载入网页后.");
			}
		};
		aa.start();
	}

	// webview上边的返回键 和手机返回键作用相同
	public void backmethod(View v) {
		if (mWebView.canGoBack()) {
			mWebView.goBack();
		} else {
			// 按了返回键，但已经不能返回，则执行 关闭activity
			this.finish();
		}
	}

	public boolean onKeyDown(int keyCode, KeyEvent event) {// 捕捉返回键
		if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
			mWebView.goBack();
			return true;
		} else if (keyCode == KeyEvent.KEYCODE_BACK) {
			// 按了返回键，但已经不能返回，则执行 关闭activity
			this.finish();
			return true;
		}
		return super.onKeyDown(keyCode, event);
	}
	//
	// // 退出确认对话框
	// public void ConfirmExit() {// 退出确认
	// AlertDialog.Builder ad = new AlertDialog.Builder(MyWebViewAct.this);
	// ad.setTitle("退出");
	// ad.setMessage("是否关闭当前页面?");
	// ad.setPositiveButton("是", new DialogInterface.OnClickListener() {// 退出按钮
	// @Override
	// public void onClick(DialogInterface dialog, int i) {
	// // TODO Auto-generated method stub
	// MyWebViewAct.this.finish();// 关闭activity
	//
	// }
	// });
	// ad.setNegativeButton("否", new DialogInterface.OnClickListener() {
	// @Override
	// public void onClick(DialogInterface dialog, int i) {
	// // 不退出不用执行任何操作
	// }
	// });
	// ad.show();// 显示对话框
	// }

}
